#!/bin/bash

# Redis连接信息
REDIS_HOST="redis.singapore.rds.aliyuncs.com"
REDIS_PORT=6379
REDIS_PASSWORD="abc123"
REDIS_CLI="redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD"

# 创建临时文件存储结果
TEMP_FILE="./redis_keys_analysis_$(date +%Y%m%d_%H%M%S).txt"

echo "开始分析Redis中的key..."

# 获取所有key
echo "正在获取所有key..."
$REDIS_CLI --scan > "$TEMP_FILE"

echo "分析结果："
echo "----------------------------------------"

# 分析每个key
while IFS= read -r key; do
    # 获取key的类型
    key_type=$($REDIS_CLI type "$key" | grep -v "OK")
    
    # 获取key的过期时间
    ttl=$($REDIS_CLI ttl "$key")
    
    # 获取key的最后访问时间（通过object idletime）
    idle_time=$($REDIS_CLI object idletime "$key")
    
    # 如果key没有过期时间
    if [ "$ttl" -eq -1 ]; then
        echo "Key: $key"
        echo "类型: $key_type"
        echo "状态: 没有设置过期时间"
        echo "空闲时间: $((idle_time/3600))小时"
        echo "----------------------------------------"
    # 如果key已经过期
    elif [ "$ttl" -eq -2 ]; then
        echo "Key: $key"
        echo "类型: $key_type"
        echo "状态: 已过期"
        echo "----------------------------------------"
    # 如果key空闲时间超过10天（864000秒）
    elif [ "$idle_time" -gt 864000 ]; then
        echo "Key: $key"
        echo "类型: $key_type"
        echo "状态: 空闲时间超过10天"
        echo "空闲时间: $((idle_time/3600))小时"
        echo "剩余过期时间: $ttl秒"
        echo "----------------------------------------"
    fi
done < "$TEMP_FILE"

# 清理临时文件
#rm -f "$TEMP_FILE"

echo "分析完成！"